#pragma once
#ifndef __BATTLE_H__
#define __BATTLE_H__
#include "Player.h"
#include <iostream>
#include <string>

using namespace std;

class Player;
class Monster;
class Character;

// 战斗系统
class Battle {
public:
    // 构造函数，接收两个战斗参与者
    Battle(Player* player, Monster* monster): combatant1(player), combatant2(monster), isActive(false), winner(nullptr), loser(nullptr) {}
    // 开始战斗
    void startBattle();
    // 析构函数
    ~Battle() = default;
    // 获取战斗状态
    bool isBattleActive() const;
    // 获取胜利者
    Character* getWinner() const;
    // 获取失败者
    Character* getLoser() const;
    // 得到战前生命，复活时使用
    int getBackupLife();
    // 得到战前法力，复活时使用
    int getBackupMana();

private:
    int backupLife = 0; // 战斗前的生命值
    int backupMana = 0; // 战斗前的法力值
    Player* combatant1;  // 玩家
    Monster* combatant2; // 怪物
    bool isActive; // 战斗是否正在进行
    Character* winner; // 战斗胜利者
    Character* loser; // 战斗失败者
    bool processPreTurnEffects(Character* character); // 得到本回合行动者
    void displayBattleStatus(); // 显示战斗状态
    bool checkBattleEnd(); // 检查战斗结果
};

#endif // !__BATTLE_H__
